﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.Security;
using System.Web;
using planerka.Common.Enums;
using planerka.DataAccess.DataService;

namespace planerka.DataAccess.Models
{
    public partial class user
    {
        // Пользователи:
        // 1 "Я"
        // 2 "Те, которых я создал"
        // 3 "Приглашенные - real"


        // представление имени
        private string _nameView;
        public string nameView
        {
            get 
            {
                string retValue = String.IsNullOrEmpty(_nameView) ? (this.surName + " " + this.firstName) : _nameView;
                if (retValue.Trim() == "" && ID != 0)
                    retValue = !String.IsNullOrEmpty(email) ? email : "ID: " + ID.ToString();

                return retValue;
            }
            set
            { _nameView = value; }
        }

        // роль для сервиса обмена сообщениями
        public projectRoles projectRole { get; set; }

        //// права на просмотр
        //public bool rightsView { get; set; }

        // новая
        public bool isNew { get; set; }

        // права на просмотр
        public bool rightsView
        {
            get
            {
                UserService userService = new UserService();
                user currentUser = userService.getCurrentUser();
                return isNew || userService.getUserList(currentUser.UserId).Where(p => p.ID == this.ID).Count() > 0;
            }
            set { rightsView = value; }
        }

        //// isCustomer  с учетом приглашенных реальных пользователей
        //public bool isCustomerOrRealInvited
        //{
        //    get {
        //        return 
        //    }
        //    set { isCustomerOrRealInvited = value; }
        //}

        // права на редактирование
        // можно редактировать только свой или без подтвержденного email
        public bool rightsEdit
        {
            get
            {
                user currentUser = new UserService().getCurrentUser();
                return isNew || (!this.isEmailApproved || currentUser.UserId == this.UserId);
            }
            set 
            { rightsEdit = value; }
        }
        
        // права на удаление
        public bool rightsDelete 
        {
            get { return !_isEmailApproved && rightsEdit; } 
            set { rightsDelete = value; } 
        }

        // вернуть строку пути к файлу фотографии
        public string photoFileString
        {
            get {
                string pathToFile = 
                    System.Web.HttpContext.Current.Server.MapPath("~/images/photo/" + photo);

                if (System.IO.File.Exists(pathToFile))
                    return "/images/photo/" + photo;
                else
                    return "";
            
            }
            set {}
        }

        // вернуть строку пути к файлу фотографии
        public string photoNailFileString
        {
            get
            {
                string pathToFile = 
                    System.Web.HttpContext.Current.Server.MapPath("~/images/photo/nails/" + photo);

                if (System.IO.File.Exists(pathToFile))
                    return "/images/photo/nails/" + photo;
                else
                    return "/images/photo/nails/nophoto.jpg";

            }
            set { }
        }
        
    }
}
